import Vue from "vue";
import Vuex from 'vuex';
Vue.use(Vuex);
// state在vuex主要用于存储数据
let state={
  count:1
}
// mutaions里面放的主要是方法，该方法主要是为了改变state里面的数据
let mutations={
    incCount(state,obj){
      state.count=state.count+1+obj.amount;
    }
}
//有点类似于计算属性，改变state里的count数据的时候会触发getters里的方法获取新的值
// 注意，getter 在通过方法访问时，每次都会去进行调用，而不会缓存结果。
let getters= {
  computedCount: (state)=>(chuanZhi) => {
    return state.count*3*chuanZhi
  }
}
//该东西的主要意思是你在这里面可以执行一些异步操作
let actions={   //其实就是通过固定的actions写法，可以触发 mutations
  // 里的incCount方法(为的是在里面加入一些异步方法),从而改变存储介质state的数据
  incMutaionsCount(context,canShu) {
    //这里可以写一些异步的方法
    context.commit('incCount',canShu)
  }
}
// const store=new Vuex.Store({state:state, mutations:mutations})
//下面写法是当参数名和参数写的字母一样的时候可以简写的一种写法
//实例化 vuex.store
const store=new Vuex.Store({state, mutations,getters,actions})
//暴露store
export default store;
